/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package bankowosc;

import bankowosc.dane.Rachunek;
import bankowosc.dane.Waluta;
import bankowosc.dane.Polecenie_zaplaty;
import bankowosc.dane.Polecenie_przelewu;
import bankowosc.dane.Lista_przelewow_stalych;
import bankowosc.dane.Czestotliwosc;
import bankowosc.polaczenie.WalutaBD;
import bankowosc.polaczenie.CzestotliwoscDB;
import bankowosc.polaczenie.polacz;
import java.awt.Color;
import java.util.Calendar;
import net.sourceforge.jdatepicker.impl.JDatePanelImpl;
import net.sourceforge.jdatepicker.impl.JDatePickerImpl;
import net.sourceforge.jdatepicker.impl.UtilDateModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextField;
import javax.swing.GroupLayout;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import bankowosc.polaczenie.TransakcjeDB;
/**
 *
 * @author Maciek
 */


public class TransakcjePanel {
        private ArrayList<Rachunek> rachunki;
        private ArrayList<Polecenie_przelewu > lista_odbiorcow = new ArrayList<Polecenie_przelewu >();
        private ArrayList<Lista_przelewow_stalych> przelewy_stale= new ArrayList<Lista_przelewow_stalych>();
        private JPanel panel;
        private polacz p;
 
        JComboBox cbWaluta= new JComboBox();
        JComboBox cbRachunki= new JComboBox();
        JComboBox odbiorcy =new JComboBox();
        JLabel lblprzyp=new JLabel();
        JLabel lblnazwa_odbiorcy_blad = new JLabel("Niepoprawna nazwa odbiorcy");
        JLabel lbltytul_przelewu_blad = new JLabel("Niepoprawny tytuł przelewu");
        JLabel lblkwota_text_blad = new JLabel("Niepoprawna wartość kwoty");
        JLabel lblnr_achunku_odbiorcy_blad = new JLabel("Niepoprawny numer rachunku");
        JLabel lbldaty_blad = new JLabel("Niepoprawne daty");
        DefaultComboBoxModel modelCB = new DefaultComboBoxModel();
         JTable tabela_przelewow_stalych= new JTable();
        JTextField nr_rachunku_odbiorcy_textField= new JTextField();;
        JTextField nazwa_odbiorcy_textField = new JTextField();
        JTextField adres_odbiorcy_textField= new JTextField();
        JTextField tytul_przelewu_textField= new JTextField();
        JTextField kwota_textField= new JTextField();
        JButton btnDalej = new JButton("Dalej");
        JButton btnAnuluj = new JButton("Anuluj");
        JButton btnSymulacja = new JButton("Symulacja");
        JButton btnDodaj_zaplate = new JButton("Dodaj przykładowe zlecenie");
        JButton btntel = new JButton("Telekomunikacja");
        JButton btnwodo = new JButton("Wodociągi");
        UtilDateModel model = new UtilDateModel();
         UtilDateModel model2 = new UtilDateModel();
        JDatePanelImpl datePanel1 = new JDatePanelImpl(model);
        JDatePanelImpl datePanel2 = new JDatePanelImpl(model2);
        JDatePickerImpl pierwsza_data = new JDatePickerImpl(datePanel1);
        JDatePickerImpl druga_data = new JDatePickerImpl(datePanel2);
         JScrollPane scrollPane = new JScrollPane();
         
        TransakcjeDB db = new TransakcjeDB();
        
  public  TransakcjePanel (final polacz p,JPanel panel,ArrayList<Rachunek> rachunki) {
		this.rachunki = rachunki;
      		this.p = p;
                this.panel=panel;
                
               panel.setLayout(new GroupLayout(panel));
  }
  public void Przelew_jednorazowy()
  {   panel.removeAll();
      panel.repaint();
      WalutaBD walutabd = new WalutaBD();
		ArrayList<Waluta> waluty = walutabd.pobierzWalute(p);
   
   		cbRachunki= new JComboBox();
            for(int i=0; i<rachunki.size(); i++)
		cbRachunki.addItem(rachunki.get(i).getNr_rachunku());
		cbRachunki.setBounds(140, 20, 216, 25);
                final JLabel lbldostepne = new JLabel("Sródki dostępne: "+db.pobierz_srodki_dostepne(p, cbRachunki.getSelectedItem().toString())+ " zł");
               cbRachunki .addActionListener (new ActionListener () {
                 public void actionPerformed(ActionEvent e) {
                      lista_odbiorcow= db.pobierz_przelewy_winien(p, cbRachunki.getSelectedItem().toString());		
               
                        lbldostepne.setText("Sródki dostępne: "+db.pobierz_srodki_dostepne(p, cbRachunki.getSelectedItem().toString())+ " zł");
                        panel.remove(odbiorcy); 
                           odbiorcy = new JComboBox();
                            odbiorcy.setBounds(30,55,300,25);
                            odbiorcy.addItem("Pobierz odbiorcę");
                            String toAdd="";
                             modelCB = new DefaultComboBoxModel();
                              for(int i=0; i<lista_odbiorcow.size(); i++)
                              {toAdd=lista_odbiorcow.get(i).getNazwa_wierzyciela()+": "+lista_odbiorcow.get(i).getNr_rachunku_wierzyciela();

                              if(modelCB.getIndexOf(toAdd) == -1 ) {
                                   odbiorcy.addItem(lista_odbiorcow.get(i).getNazwa_wierzyciela()+": "+lista_odbiorcow.get(i).getNr_rachunku_wierzyciela());
                                modelCB.addElement(toAdd);
                              }
                              }
                            odbiorcy.addActionListener (new ActionListener () {
                  public void actionPerformed(ActionEvent e) {
                             if(odbiorcy.getSelectedIndex()>0)
                             {
                                 nr_rachunku_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getNr_rachunku_wierzyciela());
                                 nazwa_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getNazwa_wierzyciela());
                                 adres_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getAdres_wierzyciela());
                                 tytul_przelewu_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getTytul());
                             }
                             else
                             {
                                nr_rachunku_odbiorcy_textField.setText("");
                                 nazwa_odbiorcy_textField.setText("");
                                 adres_odbiorcy_textField.setText("");
                                 tytul_przelewu_textField.setText("");

                             }
                              }
                              });
                            panel.add(odbiorcy); 
                            panel.repaint();
                            }
                         });
		panel.add(cbRachunki);
               lista_odbiorcow= db.pobierz_przelewy_winien(p, cbRachunki.getSelectedItem().toString());		
               
    
            
      JLabel label = new JLabel("Wybierz rachunek:");
              label.setBounds(10, 20, 120, 14);
              panel.add(label);
              
   
              
              
        JLabel lblnr_rachunku_odbiorcy = new JLabel("Nr rachunku odbiorcy:*");
		lblnr_rachunku_odbiorcy.setBounds(10, 90, 150, 14);
		panel.add(lblnr_rachunku_odbiorcy);
 
                nr_rachunku_odbiorcy_textField = new JTextField();
		nr_rachunku_odbiorcy_textField.setBounds(140, 90, 216, 25);
		panel.add(nr_rachunku_odbiorcy_textField);
        JLabel lblnazwa_odbiorcy = new JLabel("Nazwa odbiorcy:*");
		lblnazwa_odbiorcy.setBounds(10, 120, 120, 14);
		panel.add(lblnazwa_odbiorcy);
   
               
		nazwa_odbiorcy_textField.setBounds(140, 120, 216, 25);
		panel.add(nazwa_odbiorcy_textField);
        JLabel lbladres_odbiorcy = new JLabel("Adres odbiorcy:");
		lbladres_odbiorcy.setBounds(10, 150, 150, 14);
		panel.add(lbladres_odbiorcy);
               
                adres_odbiorcy_textField = new JTextField();
		adres_odbiorcy_textField.setBounds(140, 150, 216, 25);
		panel.add(adres_odbiorcy_textField);
        JLabel lbltytul_przelewu = new JLabel("Tytuł przelewu:*");
		lbltytul_przelewu.setBounds(10, 180, 180, 14);
		panel.add(lbltytul_przelewu);
                   
                tytul_przelewu_textField = new JTextField();
		tytul_przelewu_textField.setBounds(140, 180, 216, 25);
		panel.add(tytul_przelewu_textField);
                
        JLabel lblkwota = new JLabel("Kwota przelewu:*");
		lblkwota.setBounds(10, 210, 120, 14);
		panel.add(lblkwota);
                 

                kwota_textField = new JTextField();
		kwota_textField.setBounds(140, 210, 90, 25);
		panel.add(kwota_textField);
           
        cbWaluta = new JComboBox();
        for(int i=0; i<waluty.size(); i++) 
			cbWaluta.addItem(waluty.get(i).getSkrot_waluty()+" (kurs: "+waluty.get(i).getKurs_waluty()+" zł)");
		cbWaluta.setBounds(235, 210, 140, 25);
		panel.add(cbWaluta);
                
               lbldostepne.setBounds(370, 25, 300, 14);
		panel.add(lbldostepne);
                
                
         
              odbiorcy.setBounds(30,55,300,25);
              odbiorcy.addItem("Pobierz odbiorcę");
              String toAdd="";
               modelCB = new DefaultComboBoxModel();
                for(int i=0; i<lista_odbiorcow.size(); i++)
                {toAdd=lista_odbiorcow.get(i).getNazwa_wierzyciela()+": "+lista_odbiorcow.get(i).getNr_rachunku_wierzyciela();
                  
                if(modelCB.getIndexOf(toAdd) == -1 ) {
                     odbiorcy.addItem(lista_odbiorcow.get(i).getNazwa_wierzyciela()+": "+lista_odbiorcow.get(i).getNr_rachunku_wierzyciela());
                  modelCB.addElement(toAdd);
                }
                }
              odbiorcy.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
               if(odbiorcy.getSelectedIndex()>0)
               {
                   nr_rachunku_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getNr_rachunku_wierzyciela());
                   nazwa_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getNazwa_wierzyciela());
                   adres_odbiorcy_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getAdres_wierzyciela());
                   tytul_przelewu_textField.setText(lista_odbiorcow.get(odbiorcy.getSelectedIndex()).getTytul());
               }
               else
               {
                  nr_rachunku_odbiorcy_textField.setText("");
                   nazwa_odbiorcy_textField.setText("");
                   adres_odbiorcy_textField.setText("");
                   tytul_przelewu_textField.setText("");
                
               }
                }
                });
              panel.add(odbiorcy);           
                
                
                
                lblprzyp= new JLabel("Pola z * są obowiązkowe.");
		lblprzyp.setBounds(100, 240, 300, 14);
              
		panel.add(lblprzyp);
                 
                             lblnr_achunku_odbiorcy_blad.setForeground(Color.red);
                        
                                    lblnr_achunku_odbiorcy_blad.setBounds(370, 90, 200, 14);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    panel.add(lblnr_achunku_odbiorcy_blad);
                   
                                    lblnazwa_odbiorcy_blad.setForeground(Color.red);
                                    lblnazwa_odbiorcy_blad.setBounds(370, 120, 200, 14);
                                    lblnazwa_odbiorcy_blad.setVisible(false);
                                    panel.add(lblnazwa_odbiorcy_blad);
                    
                                    lbltytul_przelewu_blad.setForeground(Color.red);
                                    lbltytul_przelewu_blad.setBounds(370, 180, 200, 14);
                                    lbltytul_przelewu_blad.setVisible(false);
                                    panel.add(lbltytul_przelewu_blad);
                                   
                                    lblkwota_text_blad.setForeground(Color.red);
                                    lblkwota_text_blad.setBounds(380, 215, 200, 14);
                                    lblkwota_text_blad.setVisible(false);
                                    panel.add(lblkwota_text_blad);
                    
        
		btnDalej.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                            boolean ok=true;

				if(nr_rachunku_odbiorcy_textField.getText().length()!=26)
                                {
                                    lblnr_achunku_odbiorcy_blad.setVisible(true);  
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                    lblkwota_text_blad.setVisible(false);
                                    ok=false;     
                                }
                                 
                                else if(nazwa_odbiorcy_textField.getText().length()<3)
                                {
                                    lblnazwa_odbiorcy_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false); 
                                    lbltytul_przelewu_blad.setVisible(false);
                                    lblkwota_text_blad.setVisible(false);
                                        ok=false;
                                }
                                
                               else if(tytul_przelewu_textField.getText().length()<3)
                                {
                                    lbltytul_przelewu_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                           lblnazwa_odbiorcy_blad.setVisible(false);  ;
                           lblkwota_text_blad.setVisible(false);
                                        ok=false;
                                }
                               
                               else if(kwota_textField.getText().length()<1 || db.pobierz_srodki_dostepne(p, cbRachunki.getSelectedItem().toString())-Float.parseFloat(kwota_textField.getText())<0)
                                {
                                    lblkwota_text_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                     
                                        ok=false;
                                }
                                 panel.repaint();
                                 if(ok==true)
                                     
                                 {
                           lblnr_achunku_odbiorcy_blad.setVisible(false);
                           lblnazwa_odbiorcy_blad.setVisible(false);  
                           lbltytul_przelewu_blad.setVisible(false);
                           lblkwota_text_blad.setVisible(false);
                                    if( db.wykonaj_przelew(p,nr_rachunku_odbiorcy_textField.getText(), cbRachunki.getSelectedItem().toString(),tytul_przelewu_textField.getText(), adres_odbiorcy_textField.getText() ,tytul_przelewu_textField.getText(),Float.parseFloat(kwota_textField.getText()), cbWaluta.getSelectedIndex()+1))
                                    {
                                        panel.removeAll();
                                        JLabel lblpomyslnie = new JLabel("Transakcja wykonana pomyślnie");
                                        lblpomyslnie.setForeground(Color.blue);
                                        lblpomyslnie.setBounds(300, 60, 200, 14);
                                        panel.add(lblpomyslnie);
                                        panel.repaint();
                                    }
                                    else
                                    {
                                        JLabel lbl_blad = new JLabel("Błąd podczas realizowania transakcji");
                                        lbl_blad.setForeground(Color.red);
                                         lbl_blad.setBounds(370, 240, 300, 14);
                                        panel.add(lbl_blad);
                                        panel.repaint();
                                    }
                                        }
			}
		});
               
		
                btnDalej.setBounds(220, 270, 120, 28);
		panel.add(btnDalej);

		btnAnuluj.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				panel.removeAll();
                                panel.repaint();
			}
		});
                btnAnuluj.setBounds(80, 270, 120, 28);
		panel.add(btnAnuluj);
  }
  
  
   public void Przelewy_stale()
  {   panel.removeAll();
  
    JLabel label = new JLabel("Wybierz rachunek:");
              label.setBounds(270, 16, 120, 14);
              panel.add(label);
             cbRachunki= new JComboBox();
            for(int i=0; i<rachunki.size(); i++)
		cbRachunki.addItem(rachunki.get(i).getNr_rachunku());
		cbRachunki.setBounds(370, 10, 216, 25);
                cbRachunki.addActionListener (new ActionListener () {
                 public void actionPerformed(ActionEvent e) {
                     String[] columnNames = {"Tytuł przelewu",
                        "Nazwa odbiorcy",
                        "Kwota przelewu",
                        "Data ostatniego przelewu",
                        "Czestotliwość przelewu (dni)"};
                TransakcjeDB db = new TransakcjeDB();
                WalutaBD walutabd = new WalutaBD();
                ArrayList<Waluta> waluty = walutabd.pobierzWalute(p);
                przelewy_stale= db.pobierz_przelewy_stale(p, cbRachunki.getSelectedItem().toString());
                CzestotliwoscDB dbc = new CzestotliwoscDB();
                Polecenie_przelewu przelew=new Polecenie_przelewu();
                Czestotliwosc czesto=new Czestotliwosc();
                Object[][] data = new Object[przelewy_stale.size()][5];
                for(int i=0; i<przelewy_stale.size(); i++) 
                {
                    przelew=db.pobierz_przelew(p,Integer.toString( przelewy_stale.get(i).getId_polecenia_przelewu()));
                    czesto=dbc.pobierz_czestotliwosc(p, Integer.toString(przelewy_stale.get(i).getId_czestotliwosci()));
                    data[i][0]=przelew.getTytul();
                   
                data[i][1]=przelew.getNazwa_wierzyciela();
                data[i][2]=przelew.getWartosc()+" "+waluty.get(przelew.getId_waluty()-1).getSkrot_waluty();
                data[i][3]=czesto.getOstatnia_data();
                data[i][4]=czesto.getIlu_dniowy_okres();
                }
                 
                tabela_przelewow_stalych= new JTable(data, columnNames);
                tabela_przelewow_stalych.setBounds(10, 130,680, 350);
                tabela_przelewow_stalych.setEnabled(false);
                panel.remove(scrollPane);
                scrollPane = new JScrollPane(tabela_przelewow_stalych);
                scrollPane.setBounds(10, 130,750, 450);
                tabela_przelewow_stalych.setFillsViewportHeight(true);
                panel.add(scrollPane);
               
                panel.repaint();
                            }
                         });
		panel.add(cbRachunki);
  

                JLabel lbl_lista= new JLabel("Lista zdeklarowanych przelewów stałych:");
                
                                         lbl_lista.setBounds(10, 100, 300, 14);
                                        panel.add(lbl_lista);
                                        panel.repaint();
                String[] columnNames = {"Tytuł przelewu",
                        "Nazwa odbiorcy",
                        "Kwota przelewu",
                        "Data ostatniego przelewu",
                        "Czestotliwość przelewu (dni)"};
             final      TransakcjeDB db = new TransakcjeDB();
                
       przelewy_stale= db.pobierz_przelewy_stale(p, cbRachunki.getSelectedItem().toString());
 
               CzestotliwoscDB dbc = new CzestotliwoscDB();
               WalutaBD walutabd = new WalutaBD();
          ArrayList<Waluta> waluty = walutabd.pobierzWalute(p);
             Polecenie_przelewu przelew=new Polecenie_przelewu();
             Czestotliwosc czesto=new Czestotliwosc();
                Object[][] data = new Object[przelewy_stale.size()][5];
                for(int i=0; i<przelewy_stale.size(); i++) 
                {
                    przelew=db.pobierz_przelew(p,Integer.toString( przelewy_stale.get(i).getId_polecenia_przelewu()));
                    czesto=dbc.pobierz_czestotliwosc(p, Integer.toString(przelewy_stale.get(i).getId_czestotliwosci()));
                    data[i][0]=przelew.getTytul();
                data[i][1]=przelew.getNazwa_wierzyciela();
                data[i][2]=przelew.getWartosc()+" "+waluty.get(przelew.getId_waluty()-1).getSkrot_waluty();
                data[i][3]=czesto.getOstatnia_data();
                data[i][4]=czesto.getIlu_dniowy_okres();
                }
                
               tabela_przelewow_stalych= new JTable(data, columnNames);
             
                tabela_przelewow_stalych.setBounds(10, 130,680, 350);
                tabela_przelewow_stalych.setEnabled(false);
                scrollPane = new JScrollPane(tabela_przelewow_stalych);
                scrollPane.setBounds(10, 130,750, 450);
                tabela_przelewow_stalych.setFillsViewportHeight(true);
                panel.add(scrollPane);
                JButton btndodaj_przelew_staly= new JButton("Dodaj polecenie stałego przelewu");
		btndodaj_przelew_staly.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Przelew_jednorazowy();
                                panel.remove(btnAnuluj);
                                panel.remove(btnDalej);
                                panel.remove(lblprzyp);
                             btnDalej=new JButton("Dalej")  ; 
                             pierwsza_data.setVisible(true);
               btnDalej.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                            boolean ok=true;
                            Date dzis = new Date();
                            Date DataPierwsza = (Date) pierwsza_data.getModel().getValue();
                            Date DataDruga = (Date) druga_data.getModel().getValue();
				if(nr_rachunku_odbiorcy_textField.getText().length()!=26)
                                {
                                    lblnr_achunku_odbiorcy_blad.setVisible(true);  
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                    lblkwota_text_blad.setVisible(false);
                                    lbldaty_blad.setVisible(false);
                                    ok=false;     
                                }
                                 
                                else if(nazwa_odbiorcy_textField.getText().length()<3)
                                {
                                    lblnazwa_odbiorcy_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false); 
                                    lbltytul_przelewu_blad.setVisible(false);
                                    lblkwota_text_blad.setVisible(false);
                                    lbldaty_blad.setVisible(false);
                                        ok=false;
                                }
                                
                               else if(tytul_przelewu_textField.getText().length()<3)
                                {
                                    lbltytul_przelewu_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    lblnazwa_odbiorcy_blad.setVisible(false);  ;
                                    lblkwota_text_blad.setVisible(false);
                                    lbldaty_blad.setVisible(false);
                                        ok=false;
                                }
                               
                               else if(kwota_textField.getText().length()<1 || kwota_textField.getText().compareTo("0")==0 || db.pobierz_srodki_dostepne(p, cbRachunki.getSelectedItem().toString())-Float.parseFloat(kwota_textField.getText())<0)
                                {
                                    lblkwota_text_blad.setVisible(true);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                    lbldaty_blad.setVisible(false);
                                     
                                        ok=false;
                                }
                                else if( DataPierwsza==null || DataDruga==null )
                                {
                                    lbldaty_blad.setVisible(true);
                                    lblkwota_text_blad.setVisible(false);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                     ok=false;
                                }
                                else  if (DataPierwsza.compareTo(DataDruga)==0 || DataPierwsza.compareTo(DataDruga)>0  || DataPierwsza.compareTo(dzis)<0 )
                                 {
                                    lbldaty_blad.setVisible(true);
                                    lblkwota_text_blad.setVisible(false);
                                    lblnr_achunku_odbiorcy_blad.setVisible(false);
                                    lblnazwa_odbiorcy_blad.setVisible(false);  
                                    lbltytul_przelewu_blad.setVisible(false);
                                     
                                        ok=false; 
                                 }
                                 panel.repaint();
                                 if(ok==true)   
                                 {
                           lblnr_achunku_odbiorcy_blad.setVisible(false);
                           lblnazwa_odbiorcy_blad.setVisible(false);  
                           lbltytul_przelewu_blad.setVisible(false);
                           lblkwota_text_blad.setVisible(false);
                           lbldaty_blad.setVisible(false);
                            Calendar cal = Calendar.getInstance();
                            cal.setTime(DataPierwsza);
                            Calendar cal2 = Calendar.getInstance();
                            cal2.setTime(DataDruga);
                            int Dzien1 = cal.get(Calendar.DAY_OF_YEAR);   
                            int Dzien2 = cal2.get(Calendar.DAY_OF_YEAR);
                            int okres;
                            if(cal.get(Calendar.YEAR)<cal2.get(Calendar.YEAR))
                                okres=365*(cal2.get(Calendar.YEAR)-cal.get(Calendar.YEAR))+(Dzien2-Dzien1);
                            else
                                  okres=Dzien2-Dzien1;
                                    if( db.dodaj_polecenie_przelewu(p,nr_rachunku_odbiorcy_textField.getText() , cbRachunki.getSelectedItem().toString(),tytul_przelewu_textField.getText(), adres_odbiorcy_textField.getText() ,tytul_przelewu_textField.getText(),Float.parseFloat(kwota_textField.getText()), cbWaluta.getSelectedIndex()+1,okres,DataPierwsza))
                                    {
                                        panel.removeAll();
                                        JLabel lblpomyslnie = new JLabel("Transakcja wykonana pomyślnie");
                                        lblpomyslnie.setForeground(Color.blue);
                                        lblpomyslnie.setBounds(300, 60, 200, 14);
                                        panel.add(lblpomyslnie);
                                        panel.repaint();
                                    }
                                    else
                                    {
                                        JLabel lbl_blad = new JLabel("Błąd podczas realizowania transakcji");
                                        lbl_blad.setForeground(Color.red);
                                         lbl_blad.setBounds(370, 240, 300, 14);
                                        panel.add(lbl_blad);
                                        panel.repaint();
                                    }
                                        }
			}
		});
               
		
                btnDalej.setBounds(220, 350, 120, 28);
		panel.add(btnDalej);
                btnAnuluj =new JButton("Anuluj");
		btnAnuluj.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Przelewy_stale();
                                panel.repaint();
			}
		});
                btnAnuluj.setBounds(80, 350, 120, 28);
		panel.add(btnAnuluj);
                
                JLabel lblpierwsza= new JLabel("Pierwsza data wpłaty*: ");
		lblpierwsza.setBounds(10, 240, 300, 14);
		panel.add(lblpierwsza);
                JLabel lbldruga= new JLabel("Druga data wpłaty*: ");
		lbldruga.setBounds(10, 270, 300, 14);
		panel.add(lbldruga);
                
               lbldaty_blad.setForeground(Color.RED);
		lbldaty_blad.setBounds(320, 255, 300, 14);
                lbldaty_blad.setVisible(false);
		panel.add(lbldaty_blad);
                
                pierwsza_data.setBounds(140, 240, 150, 30);
                panel.add(pierwsza_data);
                druga_data.setBounds(140, 270, 150, 30);
                panel.add(druga_data);
                
                lblprzyp= new JLabel("Pola z * są obowiązkowe.");
		lblprzyp.setBounds(100, 310, 300, 14);
              
		panel.add(lblprzyp);
                panel.repaint();
			}
		});
                btndodaj_przelew_staly.setBounds(10, 10, 250, 28);
		panel.add(btndodaj_przelew_staly);
             
   JButton btnusun_przelew_staly = new JButton("Usuń polecenie stałego przelewu");
		btnusun_przelew_staly.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                                        int[ ]rows = tabela_przelewow_stalych.getSelectedRows();
                                        for(int i=0;i<rows.length;i++){
                                         if(db.usun_polecenie_przelewu(p, Integer.toString(przelewy_stale.get(rows[i]).getId_przelewu_stalego())))
                                         {
                                              Przelewy_stale();
                                              panel.repaint();
                                         }
                                        }
			}
		});
                
                btnusun_przelew_staly.setBounds(10, 50, 250, 28);
		panel.add(btnusun_przelew_staly);
                pierwsza_data = new JDatePickerImpl(datePanel1);
                 pierwsza_data.setVisible(false);
                 pierwsza_data.setBounds(340, 50, 150, 30);
                 panel.add(pierwsza_data);
                btnSymulacja = new JButton("Symulacja");
                btnSymulacja.setBounds(500, 50, 216, 25);
                btnSymulacja.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                            
              
                
                            pierwsza_data.setVisible(true);   
                            btnDalej = new JButton("OK")  ;      
                            btnDalej.setBounds(450, 90, 120, 28);
                            btnDalej.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
				      Date dzis = new Date();
                                     Date DataPierwsza = (Date) pierwsza_data.getModel().getValue();
                                      if( DataPierwsza!=null || DataPierwsza.compareTo(dzis)>0  )
                                {
                                    db.Symulacja_przelewu(p, DataPierwsza);
                                            Przelewy_stale();
                                    panel.repaint();
                                }
                                
                                    }
                                });
                            panel.add(btnDalej);
                              panel.repaint();     
			}
		});
                panel.add(btnSymulacja);
                
                
     
  }
    public void Polecenie_zaplaty()
  {   panel.removeAll();
  JLabel label = new JLabel("Wybierz rachunek:");
              label.setBounds(10, 16, 120, 14);
              panel.add(label);
     final  JComboBox cbRachunki= new JComboBox();
            for(int i=0; i<rachunki.size(); i++)
		cbRachunki.addItem(rachunki.get(i).getNr_rachunku());
		cbRachunki.setBounds(140, 10, 216, 25);
		 cbRachunki.addActionListener (new ActionListener () {
                 public void actionPerformed(ActionEvent e) {
                   ArrayList<Polecenie_zaplaty> przelewy= new ArrayList<>() ;
                     String[] columnNames = {"Nr rachunku wierzyciela","Nazwa wierzyciela" ,"Adres wierzyciela" ,"Data_wykonania" ,"Tytul" ,"Wartosc" };
                        panel.remove(scrollPane);
                    TransakcjeDB db = new TransakcjeDB();
                    CzestotliwoscDB dbc = new CzestotliwoscDB();
                    przelewy=  db.pobierz_zaplaty(p, cbRachunki.getSelectedItem().toString());

                     WalutaBD walutabd = new WalutaBD();
                     ArrayList<Waluta> waluty = walutabd.pobierzWalute(p);
                     Object[][] data = new Object[przelewy.size()][6];
                     for(int i=0; i<przelewy.size(); i++) 
                     {
                     data[i][0]=przelewy.get(i).getNr_rachunku_wierzyciela();
                     data[i][1]=przelewy.get(i).getNazwa_wierzyciela();
                     data[i][2]=przelewy.get(i).getAdres_wierzyciela();
                     data[i][3]=przelewy.get(i).getData_wykonania();
                     data[i][4]=przelewy.get(i).getTytul();
                     data[i][5]=przelewy.get(i).getWartosc()+" "+waluty.get(przelewy.get(i).getId_waluty()-1).getSkrot_waluty();;


                     }

                     tabela_przelewow_stalych= new JTable(data, columnNames);

                     tabela_przelewow_stalych.setEnabled(false);
                     tabela_przelewow_stalych.setBounds(10, 130,750, 450);
                     scrollPane = new JScrollPane(tabela_przelewow_stalych);
                     scrollPane.setBounds(10, 130,750, 450);
                     tabela_przelewow_stalych.setFillsViewportHeight(true);
                     panel.add(scrollPane);

                     panel.repaint();
                            }
                         });
		panel.add(cbRachunki);
                 String[] columnNames = {"Nr rachunku wierzyciela","Nazwa wierzyciela" ,"Adres wierzyciela" ,"Data_wykonania" ,"Tytul" ,"Wartosc" };
                
                btnSymulacja = new JButton("Symulacja");
                btnSymulacja.setBounds(450, 10, 216, 25);
                btnSymulacja.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                            pierwsza_data.setVisible(true);   
                            btnDalej = new JButton("OK")  ;      
                            btnDalej.setBounds(140, 85, 120, 28);
                            btnDalej.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
				      Date dzis = new Date();
                                     Date DataPierwsza = (Date) pierwsza_data.getModel().getValue();
                                      if( DataPierwsza!=null || DataPierwsza.compareTo(dzis)>0  )
                                {
                                    db.Symulacja_zaplat(p, DataPierwsza);
                                            Polecenie_zaplaty();
                                    panel.repaint();
                                }
                                
                                    }
                                });
                            panel.add(btnDalej);
                                  
			}
		});
                panel.add(btnSymulacja);
                btnDodaj_zaplate = new JButton("Dodaj przykładowe zlecenie");
                btnDodaj_zaplate.setBounds(450, 45, 216, 25);
                btnDodaj_zaplate.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                             btnwodo.setVisible(true);            
                             btntel.setVisible(true);         
			}
		});
                panel.add(btnDodaj_zaplate);
                
                pierwsza_data = new JDatePickerImpl(datePanel1);
                btntel = new JButton("Telekomunikacja");
                pierwsza_data.setVisible(false);
                 pierwsza_data.setBounds(10, 50, 150, 30);
                            panel.add(pierwsza_data); 
                btntel.setBounds(400, 80, 150, 25);
                btntel.setVisible(false);
                btntel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                          
                            pierwsza_data.setVisible(true);
                            btnDalej = new JButton("Dodaj")  ;      
                            btnDalej.setBounds(140, 85, 120, 28);
                             btnDalej.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                      
                                    Date dzis = new Date();
                                     Date DataPierwsza = (Date) pierwsza_data.getModel().getValue();
                                      if( DataPierwsza!=null || DataPierwsza.compareTo(dzis)>0  )
                                {
                                    db.dodaj_polecenie_zaplaty( p,  "26105014451000002276470000" ,cbRachunki.getSelectedItem().toString()  ,DataPierwsza,"Spłata rachunku nr 6694"  ,"Telkom" ,"Łódź ul. Pabianicka 125" ,85,120);
                                    Polecenie_zaplaty();
                                    panel.repaint();
                                }
                                
				
                                    }
                                });
                            panel.add(btnDalej);
                            btnAnuluj =new JButton("Anuluj");
                            btnAnuluj.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                     
                                     Polecenie_zaplaty();
                                     panel.repaint();
                                    }
                                });
                            btnAnuluj.setBounds(10, 85, 120, 28);
                            panel.add(btnAnuluj);
                            panel.repaint();
                        }         
		});
                panel.add(btntel);
                
                btnwodo = new JButton("Wodociągi");
                btnwodo.setBounds(560, 80, 150, 25);
                btnwodo.setVisible(false);
                btnwodo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
                            pierwsza_data.setVisible(true);   
                            btnDalej = new JButton("Dodaj")  ;      
                            btnDalej.setBounds(140, 85, 120, 28);
                            btnDalej.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
				      Date dzis = new Date();
                                     Date DataPierwsza = (Date) pierwsza_data.getModel().getValue();
                                      if( DataPierwsza!=null || DataPierwsza.compareTo(dzis)>0  )
                                {
                                    db.dodaj_polecenie_zaplaty( p,  "2658974631259864785000014" ,cbRachunki.getSelectedItem().toString()  ,DataPierwsza,"Spłata rachunku nr 159782"  ,"Wodociągi" ,"Warszawa ul. Pomorska 34" ,65,100);
                                    Polecenie_zaplaty();
                                    panel.repaint();
                                }
                                
                                    }
                                });
                            panel.add(btnDalej);
                            btnAnuluj =new JButton("Anuluj");
                            btnAnuluj.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
				Polecenie_zaplaty();
                                panel.repaint();
                                    }
                                });
                            btnAnuluj.setBounds(10, 85, 120, 28);
                            panel.add(btnAnuluj);           
                            panel.repaint();         
			}
		});
                panel.add(btnwodo);
                
               ArrayList<Polecenie_zaplaty> przelewy= new ArrayList<>() ;
               TransakcjeDB db = new TransakcjeDB();
               CzestotliwoscDB dbc = new CzestotliwoscDB();
               przelewy=  db.pobierz_zaplaty(p, cbRachunki.getSelectedItem().toString());
              
                WalutaBD walutabd = new WalutaBD();
		ArrayList<Waluta> waluty = walutabd.pobierzWalute(p);
                Object[][] data = new Object[przelewy.size()][6];
                for(int i=0; i<przelewy.size(); i++) 
                {
                data[i][0]=przelewy.get(i).getNr_rachunku_wierzyciela();
                data[i][1]=przelewy.get(i).getNazwa_wierzyciela();
                data[i][2]=przelewy.get(i).getAdres_wierzyciela();
                data[i][3]=przelewy.get(i).getData_wykonania();
                data[i][4]=przelewy.get(i).getTytul();
                data[i][5]=przelewy.get(i).getWartosc()+" "+waluty.get(przelewy.get(i).getId_waluty()-1).getSkrot_waluty();;

               
                }
                
                tabela_przelewow_stalych= new JTable(data, columnNames);
               
                tabela_przelewow_stalych.setEnabled(false);
                tabela_przelewow_stalych.setBounds(10, 130,750, 450);
                scrollPane = new JScrollPane(tabela_przelewow_stalych);
                scrollPane.setBounds(10, 130,750, 450);
                tabela_przelewow_stalych.setFillsViewportHeight(true);
                panel.add(scrollPane);
       
  
      
  }
    
   
}
